package com.test.source;

import java.util.Iterator;

/**
 * PropertySources 接口继承了 Iterable<PropertySource<?>> 接口，用于管理和提供对多个属性源（PropertySource）的访问
 * 它允许通过名称获取特定的属性源，检查是否包含特定名称的属性源，以及通过迭代器遍历所有属性源
 */
public interface PropertySources extends Iterable<PropertySource<?>>{

    /**
     * 根据名称获取属性源
     *
     * @param name 属性源的名称
     * @return 如果找到匹配的属性源，则返回该属性源对象；否则返回 null
     */
    PropertySource<?> get(String name);

    /**
     * 检查当前 PropertySources 是否包含指定名称的属性源
     *
     * @param name 要检查的属性源的名称
     * @return 如果包含指定名称的属性源，则返回 true；否则返回 false
     */
    boolean contains(String name);

    /**
     * 获取 PropertySources 的迭代器，用于遍历所有属性源
     *
     * @return PropertySources 的迭代器
     */
    @Override
    Iterator<PropertySource<?>> iterator();
}
